/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package EA_Model.IEC61970.Generation.Production;

import EA_Model.IEC61970.Core.IdentifiedObject;

import EA_Model.IEC61970.Domain.AbsoluteDateTime;
import EA_Model.IEC61970.Domain.ActivePower;
import EA_Model.IEC61970.Domain.CostPerEnergyUnit;
import EA_Model.IEC61970.Domain.CostRate;
import EA_Model.IEC61970.Domain.Hours;
import EA_Model.IEC61970.Domain.Money;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Startup Model</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getFixedMaintCost <em>Fixed Maint Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getHotStandbyHeat <em>Hot Standby Heat</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getIncrementalMaintCost <em>Incremental Maint Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getMinimumDownTime <em>Minimum Down Time</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getMinimumRunTime <em>Minimum Run Time</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getRiskFactorCost <em>Risk Factor Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStartupCost <em>Startup Cost</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStartupDate <em>Startup Date</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStartupPriority <em>Startup Priority</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStbyAuxP <em>Stby Aux P</em>}</li>
 * </ul>
 * </p>
 *
 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel()
 * @model
 * @generated
 */
public interface StartupModel extends IdentifiedObject {
	/**
	 * Returns the value of the '<em><b>Fixed Maint Cost</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Fixed Maint Cost</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Fixed Maint Cost</em>' reference.
	 * @see #setFixedMaintCost(CostRate)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_FixedMaintCost()
	 * @model ordered="false"
	 * @generated
	 */
	CostRate getFixedMaintCost();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getFixedMaintCost <em>Fixed Maint Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Fixed Maint Cost</em>' reference.
	 * @see #getFixedMaintCost()
	 * @generated
	 */
	void setFixedMaintCost(CostRate value);

	/**
	 * Returns the value of the '<em><b>Hot Standby Heat</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Hot Standby Heat</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Hot Standby Heat</em>' reference.
	 * @see #setHotStandbyHeat(HeatRate)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_HotStandbyHeat()
	 * @model ordered="false"
	 * @generated
	 */
	HeatRate getHotStandbyHeat();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getHotStandbyHeat <em>Hot Standby Heat</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Hot Standby Heat</em>' reference.
	 * @see #getHotStandbyHeat()
	 * @generated
	 */
	void setHotStandbyHeat(HeatRate value);

	/**
	 * Returns the value of the '<em><b>Incremental Maint Cost</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Incremental Maint Cost</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Incremental Maint Cost</em>' reference.
	 * @see #setIncrementalMaintCost(CostPerEnergyUnit)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_IncrementalMaintCost()
	 * @model ordered="false"
	 * @generated
	 */
	CostPerEnergyUnit getIncrementalMaintCost();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getIncrementalMaintCost <em>Incremental Maint Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Incremental Maint Cost</em>' reference.
	 * @see #getIncrementalMaintCost()
	 * @generated
	 */
	void setIncrementalMaintCost(CostPerEnergyUnit value);

	/**
	 * Returns the value of the '<em><b>Minimum Down Time</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Minimum Down Time</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Minimum Down Time</em>' reference.
	 * @see #setMinimumDownTime(Hours)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_MinimumDownTime()
	 * @model ordered="false"
	 * @generated
	 */
	Hours getMinimumDownTime();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getMinimumDownTime <em>Minimum Down Time</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Minimum Down Time</em>' reference.
	 * @see #getMinimumDownTime()
	 * @generated
	 */
	void setMinimumDownTime(Hours value);

	/**
	 * Returns the value of the '<em><b>Minimum Run Time</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Minimum Run Time</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Minimum Run Time</em>' reference.
	 * @see #setMinimumRunTime(Hours)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_MinimumRunTime()
	 * @model ordered="false"
	 * @generated
	 */
	Hours getMinimumRunTime();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getMinimumRunTime <em>Minimum Run Time</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Minimum Run Time</em>' reference.
	 * @see #getMinimumRunTime()
	 * @generated
	 */
	void setMinimumRunTime(Hours value);

	/**
	 * Returns the value of the '<em><b>Risk Factor Cost</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Risk Factor Cost</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Risk Factor Cost</em>' reference.
	 * @see #setRiskFactorCost(Money)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_RiskFactorCost()
	 * @model ordered="false"
	 * @generated
	 */
	Money getRiskFactorCost();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getRiskFactorCost <em>Risk Factor Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Risk Factor Cost</em>' reference.
	 * @see #getRiskFactorCost()
	 * @generated
	 */
	void setRiskFactorCost(Money value);

	/**
	 * Returns the value of the '<em><b>Startup Cost</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Startup Cost</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Startup Cost</em>' reference.
	 * @see #setStartupCost(Money)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_StartupCost()
	 * @model ordered="false"
	 * @generated
	 */
	Money getStartupCost();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStartupCost <em>Startup Cost</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Startup Cost</em>' reference.
	 * @see #getStartupCost()
	 * @generated
	 */
	void setStartupCost(Money value);

	/**
	 * Returns the value of the '<em><b>Startup Date</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Startup Date</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Startup Date</em>' reference.
	 * @see #setStartupDate(AbsoluteDateTime)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_StartupDate()
	 * @model ordered="false"
	 * @generated
	 */
	AbsoluteDateTime getStartupDate();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStartupDate <em>Startup Date</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Startup Date</em>' reference.
	 * @see #getStartupDate()
	 * @generated
	 */
	void setStartupDate(AbsoluteDateTime value);

	/**
	 * Returns the value of the '<em><b>Startup Priority</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Startup Priority</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Startup Priority</em>' reference.
	 * @see #setStartupPriority(EA_Model.IEC61970.Domain.Integer)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_StartupPriority()
	 * @model ordered="false"
	 * @generated
	 */
	EA_Model.IEC61970.Domain.Integer getStartupPriority();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStartupPriority <em>Startup Priority</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Startup Priority</em>' reference.
	 * @see #getStartupPriority()
	 * @generated
	 */
	void setStartupPriority(EA_Model.IEC61970.Domain.Integer value);

	/**
	 * Returns the value of the '<em><b>Stby Aux P</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Stby Aux P</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Stby Aux P</em>' reference.
	 * @see #setStbyAuxP(ActivePower)
	 * @see EA_Model.IEC61970.Generation.Production.ProductionPackage#getStartupModel_StbyAuxP()
	 * @model ordered="false"
	 * @generated
	 */
	ActivePower getStbyAuxP();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.Production.StartupModel#getStbyAuxP <em>Stby Aux P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Stby Aux P</em>' reference.
	 * @see #getStbyAuxP()
	 * @generated
	 */
	void setStbyAuxP(ActivePower value);

} // StartupModel
